package com.podium.web.system.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.podium.web.system.entity.SysRoleMenu;

import java.util.List;

/**
 * @author 邵文泽
 * @description 角色菜单关联
 * @date Tue Apr 29 17:10:47 CST 2025
 */
public interface SysRoleMenuService {

    /**
     * 分页查询
     *
     * @param page          分页对象
     * @param sysRoleMenu  角色菜单关联信息
     * @return 角色菜单关联列表
     */
    IPage<SysRoleMenu> page(Page<SysRoleMenu> page, SysRoleMenu sysRoleMenu);

    /**
     * 查询列表
     *
     * @param sysRoleMenu  角色菜单关联信息
     * @return 角色菜单关联列表
     */
    List<SysRoleMenu> list(SysRoleMenu sysRoleMenu);

    /**
     * 根据id查询角色菜单关联信息
     *
     * @param id 角色菜单关联信息ID
     * @return SysRoleMenu
     */
    SysRoleMenu getById(Long id);

    /**
     * 保存角色菜单关联信息
     *
     * @param sysRoleMenu 角色菜单关联信息
     * @return 是否保存成功
     */
    boolean save(SysRoleMenu sysRoleMenu);

    /**
     * 根据id更新角色菜单关联信息
     *
     * @param sysRoleMenu 角色菜单关联信息
     * @return 是否更新成功
     */
    boolean updateById(SysRoleMenu sysRoleMenu);

    /**
     * 根据id删除角色菜单关联信息
     *
     * @param id 标识
     */
    void removeById(Long id);

    /**
     * 根据角色id删除角色菜单关联信息
     *
     * @param roleId 角色id
     */
    void removeByRoleId(Long roleId);
    
    /**
     * 批量保存角色菜单关联信息
     *
     * @param sysRoleMenu 角色菜单关联信息
     * @return 是否保存成功
     */
    boolean saveBatch(SysRoleMenu sysRoleMenu);

    /**
     * 根据角色id查询角色菜单关联信息
     *
     * @param roleIds 角色id
     * @return 角色菜单关联信息列表
     */
    List<SysRoleMenu> listByRoleId(List<Long> roleIds);
}
